]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
notificationDaemon: Keep source alive when replacing notification
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 26 Nov 2016 18:32:22 +0000 (19:32 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Mon, 28 Nov 2016 14:42:23 +0000 (15:42 +0100)
When a GNotification has the same ID as a previous one, it should
be shown as a new notification after withdrawing the old one.
However for this to work, we must not destroy the corresponding
source if withdrawing the old notification lets the notification
count drop to zero, so make sure the source is kept alive until
the replace operation has completed.

https://bugzilla.gnome.org/show_bug.cgi?id=775149

js/ui/notificationDaemon.js

index 120751bdeb954a7f402911f87fa8693279e9a0f4..24c82b35f395476009cc50cf667bb9c025efda34 100644 (file)
@@ -690,6 +690,7 @@ const GtkNotificationDaemonAppSource = new Lang.Class({
             throw new InvalidAppError();
 
         this._notifications = {};
+        this._notificationPending = false;
 
         this.parent(this._app.get_name());
     },
@@ -729,6 +730,8 @@ const GtkNotificationDaemonAppSource = new Lang.Class({
     },
 
     addNotification: function(notificationId, notificationParams, showBanner) {
+        this._notificationPending = true;
+
         if (this._notifications[notificationId])
             this._notifications[notificationId].destroy();
 
@@ -742,6 +745,14 @@ const GtkNotificationDaemonAppSource = new Lang.Class({
             this.notify(notification);
         else
             this.pushNotification(notification);
+
+        this._notificationPending = false;
+    },
+
+    destroy: function(reason) {
+        if (this._notificationPending)
+            return;
+        this.parent(reason);
     },
 
     removeNotification: function(notificationId) {